package models

import (
	"time"
	"tuowei.com/cmd/migrate/migration/models"
	common "tuowei.com/common/models"
)

type SysOfflineCourseList struct {
	CourseId  int       `json:"course_id" comment:"课程ID"`  // 课程ID
	SerialNum string    `json:"serial_num" comment:"课程编号"` // 课程编号
	Subject   string    `json:"subject" comment:"科目"`      // 科目
	Name      string    `json:"name" comment:"课程名称"`       // 课程名称
	Cover     string    `json:"cover" comment:"封面"`        // 封面
	Price     float64   `json:"price" comment:"价格"`        // 价格
	Sales     int       `json:"sales" comment:"销量"`        // 销量
	Status    int       `json:"status" comment:"状态"`
	Creator   string    `json:"creator" gorm:"index;comment:创建者"`
	CreatedAt time.Time `json:"created_at" gorm:"comment:创建时间"`
}

type SysOfflineCourseGetDetail struct {
	CourseId     int          `json:"course_id" gorm:"primaryKey;autoIncrement;comment:主键编码"` // 课程ID
	OfflineStep1 OfflineStep1 `json:"offline_step1" gorm:"-"`
	OfflineStep2 OfflineStep2 `json:"offline_step2" gorm:"-"`
	common.ControlBy
	models.ModelTime
}

type OfflineStep1 struct {
	SerialNum      string  `json:"serial_num" comment:"课程编号"`                                    // 课程编号
	Subject        string  `json:"subject" comment:"科目" vd:"@:len($)>0; msg:'请选择科目'"`            // 科目
	Name           string  `json:"name" comment:"课程名称" vd:"@:len($)>0; msg:'课程名称不能为空'"`          // 课程名称
	Cover          string  `json:"cover" comment:"封面" vd:"@:len($)>0; msg:'请上传课程封面'"`            // 封面
	Outline        string  `json:"outline" comment:"大纲" vd:"@:len($)>0; msg:'请上传课程大纲'"`          //大纲
	Price          float64 `json:"price" comment:"价格" vd:"$>0; msg:'请填写课程价格'"`                   // 价格
	Introduction   string  `json:"introduction" comment:"课程简介" vd:"@:len($)>0; msg:'请用一句话介绍课程'"` //课程简介
	CourseDuration int     `json:"course_duration" comment:"课程时长" vd:"$>0; msg:'请输入课程时长'"`       //课程时长
	Status         int     `json:"status" comment:"状态"`
}

type OfflineStep2 struct {
	LecturerId        int    `json:"lecturer_id" comment:"讲师" vd:"$>0; msg:'请选择讲师'"`
	ClassType         string `json:"class_type" comment:"班级类型" vd:"@:len($)>0; msg:'请选择班级类型'"` //初级、中级、高级
	Province          string `json:"province" comment:"适用地区" vd:"@:len($)>0; msg:'请选择适用区域'"`   //适用区域
	BelongingProvince int    `json:"belonging_province" comment:"所属大区" vd:"$>0; msg:'请选择所属大区'"`
	City              int    `json:"city" gorm:"type:int(5);not null;comment:所属城市" vd:"$>0; msg:'请选择所属城市'"`
	DeptId            int    `json:"dept_id" comment:"教学点" vd:"$>0; msg:'请选择所属教学点'"` //教学点
	Explain           string `json:"explain" comment:"食宿说明"`
	CourseDesExplain  string `json:"course_des_explain" comment:"课程详细说明" vd:"@:len($)>0; msg:'请填写课程详细说明'"`
	BuyPush           int    `json:"buy_push" comment:"购买推送消息" vd:"$>0; msg:'请选择购买推送信息'"`
}

type SysOfflineCourse struct {
	CourseId       int     `json:"course_id" gorm:"primaryKey;autoIncrement;comment:主键编码"` // 课程ID
	SerialNum      string  `json:"serial_num" comment:"课程编号"`                              // 课程编号
	Subject        string  `json:"subject" comment:"科目"`                                   // 科目
	ClassType      string  `json:"class_type" comment:"班级类型"`                              //初级、中级、高级
	Province       string  `json:"province" comment:"适用地区"`                                //适用地区
	Name           string  `json:"name" comment:"课程名称"`                                    // 课程名称
	Cover          string  `json:"cover" comment:"封面"`                                     // 封面
	Outline        string  `json:"outline" comment:"大纲"`                                   //大纲
	Price          float64 `json:"price" comment:"价格"`                                     // 价格
	Sales          int     `json:"sales" comment:"销量"`                                     // 销量
	Introduction   string  `json:"introduction" comment:"课程简介"`                            //课程简介
	CourseDuration int     `json:"course_duration" comment:"课程时长"`                         //课程时长
	LecturerId     int     `json:"lecturer_id" gorm:"type:int(10);comment:班主任ID"`
	//OnlineClassId  int     `json:"online_class_id" gorm:"type:tinyint(2);comment:网课班级ID"` //网课班级ID
	//OnlineClass    string  `json:"online_class" gorm:"type:varchar(20);comment:网课班级"`     //网课班级
	//Contacts       string  `json:"contacts" gorm:"type:varchar(50);comment:班主任联系"`        //班主任联系
	BelongingProvince int    `json:"belonging_province" gorm:"type:int(5);not null;comment:所属大区"`
	City              int    `json:"city" gorm:"type:int(5);not null;comment:所属城市"`
	DeptId            int    `json:"dept_id" gorm:"type:smallint(5);not null;comment:教学点"` //教学点
	Explain           string `json:"explain" gorm:"type:varchar(50);comment:食宿说明"`
	CourseDesExplain  string `json:"course_des_explain" gorm:"type:text;comment:课程详细说明"`
	BuyPush           int    `json:"buy_push" gorm:"type:int(10);comment:购买推送消息"`
	Status            int    `json:"status" comment:"状态"`
	common.ControlBy
	models.ModelTime
}

func (SysOfflineCourse) TableName() string {
	return "sys_offline_course"
}

func (e *SysOfflineCourse) Generate() common.ActiveRecord {
	o := *e
	return &o
}

func (e *SysOfflineCourse) GetId() interface{} {
	return e.CourseId
}
